From: Alexander Larsson Date: Mon, 28 Nov 2016 14:31:04 +0000 (+0100) Subject: ostree-repo-traverse: Don't leak floating GVariant X-Git-Tag: archive/raspbian/2022.1-3+rpi1~1^2~4^2~42^2~52 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=fc107e5bb40c80669fe150caf90a23e83447a4d4;p=ostree.git ostree-repo-traverse: Don't leak floating GVariant ostree_object_name_serialize returns a floating ref, so we need to sink it before putting in the hashtable. Closes: #595 Approved by: cgwalters --- diff --git a/src/libostree/ostree-repo-traverse.c b/src/libostree/ostree-repo-traverse.c index e620a8ad..46f83240 100644 --- a/src/libostree/ostree-repo-traverse.c +++ b/src/libostree/ostree-repo-traverse.c @@ -348,7 +348,7 @@ traverse_iter (OstreeRepo *repo, ostree_repo_commit_traverse_iter_get_file (iter, &name, &checksum); g_debug ("Found file object %s", checksum); - key = ostree_object_name_serialize (checksum, OSTREE_OBJECT_TYPE_FILE); + key = g_variant_ref_sink (ostree_object_name_serialize (checksum, OSTREE_OBJECT_TYPE_FILE)); g_hash_table_replace (inout_reachable, key, key); key = NULL; } @@ -363,11 +363,11 @@ traverse_iter (OstreeRepo *repo, g_debug ("Found dirtree object %s", content_checksum); g_debug ("Found dirmeta object %s", meta_checksum); - key = ostree_object_name_serialize (meta_checksum, OSTREE_OBJECT_TYPE_DIR_META); + key = g_variant_ref_sink (ostree_object_name_serialize (meta_checksum, OSTREE_OBJECT_TYPE_DIR_META)); g_hash_table_replace (inout_reachable, key, key); key = NULL; - key = ostree_object_name_serialize (content_checksum, OSTREE_OBJECT_TYPE_DIR_TREE); + key = g_variant_ref_sink (ostree_object_name_serialize (content_checksum, OSTREE_OBJECT_TYPE_DIR_TREE)); if (!g_hash_table_lookup (inout_reachable, key)) { g_hash_table_replace (inout_reachable, key, key); @@ -463,7 +463,7 @@ ostree_repo_traverse_commit_union (OstreeRepo *repo, OstreeRepoCommitState commitstate; gboolean ignore_missing_dirs = FALSE; - key = ostree_object_name_serialize (commit_checksum, OSTREE_OBJECT_TYPE_COMMIT); + key = g_variant_ref_sink (ostree_object_name_serialize (commit_checksum, OSTREE_OBJECT_TYPE_COMMIT)); if (g_hash_table_contains (inout_reachable, key)) break;